/**
 * 此脚本用于更新单例模式的示例代码为Java代码
 */
const mongoose = require('mongoose');
const Pattern = require('../models/Pattern');
require('dotenv').config();

// MongoDB连接配置
const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://gof23user:gof23password@localhost:27017/gof23-game';

mongoose.connect(MONGODB_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true
}).then(() => {
  console.log('MongoDB 连接成功');
  updateSingletonCode();
}).catch(err => {
  console.error('MongoDB 连接失败', err.message);
  process.exit(1);
});

// 单例模式Java示例代码
const singletonCode = `/**
 * 单例模式示例
 */
public class Singleton {
    // 私有静态实例
    private static Singleton instance;
    
    // 私有构造函数，防止外部实例化
    private Singleton() {
        // 初始化操作
    }
    
    // 公共静态方法提供全局访问点
    public static synchronized Singleton getInstance() {
        // 懒加载
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
    
    // 业务方法
    public void doSomething() {
        System.out.println("Singleton is doing something...");
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        // 获取单例实例
        Singleton singleton1 = Singleton.getInstance();
        Singleton singleton2 = Singleton.getInstance();
        
        // 验证两个引用指向同一对象
        System.out.println("是否是同一个实例: " + (singleton1 == singleton2));
        
        // 使用单例
        singleton1.doSomething();
    }
}`;

async function updateSingletonCode() {
  try {
    // 查找单例模式
    const pattern = await Pattern.findOne({ name: 'Singleton' });
    
    if (!pattern) {
      console.log('未找到单例模式');
      process.exit(1);
    }
    
    // 仅更新示例代码字段，保留其他字段不变
    pattern.sampleCode = singletonCode;
    // 不需要修改任何其他字段
    
    await pattern.save();
    
    console.log('成功更新单例模式示例代码');
    process.exit(0);
  } catch (err) {
    console.error('更新单例模式示例代码失败:', err);
    process.exit(1);
  }
} 